home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / TankAction / TankEdit.AMOS / TankEdit.amosSourceCode < prev   
Encoding:
AMOS Source Code  |  1992-09-11  |  2.3 KB  |  84 lines

  1. Dim PL(3,1),SH(39,4),F(21,25)
  2. Gosub INIT
  3. BL=1 : MO=1 : SH=1 : LE=1
  4. Gosub UPDAT
  5. Do 
  6.   Wait Vbl 
  7.   M=Mouse Key : X=X Mouse-128 : Y=Y Mouse : I$=Inkey$
  8.   If(Y<SCY or Y>77+SCY) Then S=1 : Add Y,-40 : BX=X/16 : BY=Y/16 Else S=0 : Add Y,-SCY
  9.   If I$=Cup$ Then SCY=Max(SCY-8,32) : Screen Display 1,128,SCY,,
  10.   If I$=Cdown$ Then SCY=Min(SCY+8,224) : Screen Display 1,128,SCY,,
  11.   If S=0 and M Then MO=1 : BL=X/16+(Y/16)*20
  12.   If BL>79 and BL<84 Then MO=2 : P=BL-80
  13.   If BL=84 or BL=85 Then MO=4+(Y mod 16)/8 : BL=0
  14.   If MO=4 Then Gosub LADEN : MO=3
  15.   If MO=5 Then Gosub SPEICHERN : MO=3
  16.   If BL>79 and MO=1 Then MO=3
  17.   If BL=86 Then MO=3 : Add LE,1,1 To 99 : Gosub UPDAT : BL=0
  18.   If BL=89 Then MO=3 : Add LE,-1,1 To 99 : Gosub UPDAT : BL=0
  19.   If S=1 and M=1 and MO=1 Then F(BX,BY)=BL : Put Block BL+1,BX*16,BY*16
  20.   If S=1 and M=2 and MO=1 Then F(BX,BY)=0 : Put Block 1,BX*16,BY*16
  21.   If S=0 and SH=0 Then Show : SH=1
  22.   If S=1 and M and MO=2 Then PL(P,0)=BX : PL(P,1)=BY : Sprite P*2,BX*16+128,BY*16+40,P*16+25
  23.   If SH and S=1 Then SH=0 : S=0 : Hide 
  24.   If SH=0 and S=1 Then SH=1 : Show 
  25.   Sprite 0,PL(0,0)*16+128,PL(0,1)*16+40,25
  26. Loop 
  27. End 
  28. UPDAT:
  29.   Screen 1
  30.   Locate 14,9 : Print LE;" ";
  31.   Screen 0
  32.   Wait 5
  33. Return 
  34. LADEN:
  35.   If Exist("TankLevels/"+Str$(LE)-" ")=0 Then Boom : Return 
  36.   Erase 10 : Reserve As Data 10,328
  37.   Bload "TankLevels/"+Str$(LE)-" ",Start(10)
  38.   ST=Start(10)
  39.   For A=0 To 3
  40.     PL(A,0)=Peek(ST+A*2)
  41.     PL(A,1)=Peek(ST+A*2+1)
  42.   Next 
  43.   For Y=0 To 15
  44.     For X=0 To 19
  45.       F(X,Y)=Peek(ST+Y*20+X+8)
  46.       Put Block 1+F(X,Y),X*16,Y*16
  47.     Next 
  48.   Next 
  49. Return 
  50. SPEICHERN:
  51.   ST=Start(10)
  52.   For A=0 To 3
  53.     Doke ST+A*2,PL(A,0)*256+PL(A,1)
  54.   Next 
  55.   For Y=0 To 15
  56.     For X=0 To 19
  57.       Poke ST+Y*20+X+8,F(X,Y)
  58.     Next 
  59.   Next 
  60.   Bsave "TankLevels/"+Str$(LE)-" ",Start(10) To Start(10)+328
  61. Return 
  62. INIT:
  63.   Unpack 9 To 1
  64.   For A=0 To 79
  65.     Get Block A+1,(A mod 20)*16,(A/20)*16,16,16
  66.   Next 
  67.   Paper 0 : Pen 1
  68.   Screen Open 0,320,256,8,0
  69.   Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 
  70.   Get Sprite Palette 
  71.   For A=0 To 15 : Colour A+16,Colour(A) : Next 
  72.   For A=0 To 7 : Colour A+8,Colour(A) : Next 
  73.   Screen 1 : Get Palette 0
  74.   Screen 0
  75.   Screen Show 0
  76.   Erase 10 : Reserve As Data 10,328
  77.   For P=0 To 3
  78.     PL(P,0)=-1
  79.     PL(P,1)=-1
  80.   Next 
  81.   SCY=50
  82.   Screen To Front 1
  83.   Limit Mouse 128,32 To 447,303
  84. Return